from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
import matplotlib





#// 1. 中文显示
matplotlib.rcParams['font.family'] = 'SimHei'







#// 2. 读数据
#! 修改项
path = r"C:\Users\lainiao\Desktop\a.xlsx"
data = pd.read_excel(path)
data = data.T
''' 数据转置：
        @转置前：
            每一行：
                一组数据，代表一组柱状图
            每一列：
                一个属性，代表每一组柱状图的某一个柱子
        @转置后：
            每一行：
                一个属性，代表每一组柱状图的某一个柱子
            每一列：
                一组数据，代表一组柱状图
        @为什么转置：
            后续要用 data[0] 等，方便
    '''









#// 3. 显示布局（标题、标签、数据）


# 主题
# plt.title("function $Q_2$")
# plt.title("目标函数Q3"+'\n'+"十次实验粒度分配结果")



# 纵轴标签
plt.ylabel("$\\alpha$")



# 横轴标签
# x_label = ("$x_1$", "$x_2$")
# x_label = ("$x_1$", "$x_2$", "$x_3$")
# x_label = ("$x_1$", "$x_2$", "$x_3$", "$x_4$")
# x_label = ("房屋年龄", "最近地铁距离", "周围便利店数量", "纬度","经度")
x_label = ("产地","加速度","气缸数","排量","马力","型号年份","重量")




# 柱状图排列
bar_width = 0.05    # 柱宽
num_x_label = len(x_label)
num_data = data.shape[1]
for index in range(num_data):
    if index == (int)(num_data/2):
        plt.bar(np.arange(num_x_label)+bar_width*index, data[index], bar_width,tick_label=x_label)
    else:
        plt.bar(np.arange(num_x_label)+bar_width*index, data[index], bar_width)




''' 排列规则：
        @plt.bar()：
            一组柱状图
        @np.arange(num)
            每组柱状图，有几个属性
        @bar_width*index
            每一组柱状图的位置
        @data[index]
            用于画每一组柱状图的数据
        @bar_width
            柱状图宽度
    '''







#// 4. 绘图
plt.show()

